package com.ruoyi.yf.tool;/**
 * Created by XiaoYi  on 2020-03-20 11:22
 */

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import cn.hutool.poi.excel.sax.handler.RowHandler;
import org.apache.commons.io.Charsets;
import org.apache.poi.ss.extractor.ExcelExtractor;
import org.apache.poi.ss.usermodel.CellStyle;

import java.io.*;
import java.nio.charset.Charset;
import java.util.*;
import java.util.regex.Pattern;

/**
 * XiaoYi...
 */
public class GenerateReports {
//    private static String path = "/Users/xingyipeng/Desktop/report/dept.xlsx";
//    private static final ExcelReader reader = ExcelUtil.getReader(path,0);
//
//    public static void main(String asg[]) throws IOException {
//        List<List<Object>> read = reader.read();
//        Map<String, String> headerAlias = reader.getHeaderAlias();
//        Iterator<Map.Entry<String, String>> it = headerAlias.entrySet().iterator();
//        while (it.hasNext()) {
//            Map.Entry<String, String> entry = it.next();
//            System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
//        }
//
//        CellStyle orCreateRowStyle = reader.getOrCreateRowStyle(1);
//
//
//
//        ExcelUtil.read07BySax(path, 0, createRowHandler());
//
//    }
//
//
//
//    private static RowHandler createRowHandler() {
//        return new RowHandler() {
//            @Override
//            public void handle(int sheetIndex, int rowIndex, List<Object> rowlist) {
//                Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);
//            }
//        };
//    }
//
//    //读取excel文件
//    public static List<List<Object>> readExcel(String path) {
//        if (path.contains(".xlsx")) {
//            ExcelReader reader = ExcelUtil.getReader(FileUtil.file(path), 0);
//            List<List<Object>> readAll = reader.read();
//
//
//            return readAll;
//        }
//        return null;
//    }
//
//    //写入行
//    public static void inputLineExcel(int x, int y, String str) {
//        List<String> k = CollUtil.newArrayList();
//
//        List<String> row1 = CollUtil.newArrayList("aa", "bb", "cc", "dd");
//        List<String> row2 = CollUtil.newArrayList("aa1", "bb1", "cc1", "dd1");
//        List<String> row3 = CollUtil.newArrayList("aa2", "bb2", "cc2", "dd2");
//        List<String> row4 = CollUtil.newArrayList("aa3", "bb3", "cc3", "dd3");
//        List<String> row5 = CollUtil.newArrayList("aa4", "bb4", "cc4", "dd4");
//
//        List<List<String>> rows = CollUtil.newArrayList(k, row1, row2, row3, row4, row5);
//
//        List<String> strings = rows.get(1);
//        String s = strings.get(9);
//    }
//
//
//    public static ArrayList<Object> setHeadDate() {
//        //标题
////        List<String> title = CollUtil.newArrayList("");
//        //添加时间
//        List<Object> date = CollUtil.newArrayList();
//
//        ArrayList<Object> head = CollUtil.newArrayList(date);
//
//
//        return head;
//    }
//
//
//    //按位置写入
//    //A3 写入 你好
//    //x 列，y行
//    public static List<List<Object>> inputSitExcel(List<List<Object>> rows, int x, int y, String str) {
//        BoundaryValue boundaryValue = new BoundaryValue(x, y).invoke();
//        if (boundaryValue.is()) return null;
//
//        System.out.println(x + "/" + y + "/" + rows.size());
//
//
//        for (int i = 1; i < rows.size(); i++) {
//            List<Object> lines = rows.get(i);
//
//            if (i == y) {
//                List<Object> line = rows.get(i);
//                if (line.get(1).equals("No.1_test")) {
//
//                }
//                line.set(x - 1, str);
//            }
//            System.out.println(lines);
//        }
//        return rows;
//    }
//
//    public static List<List<Object>> inputSitExcel(List<List<Object>> rows, int x, int y, List<Object> row) {
//        BoundaryValue boundaryValue = new BoundaryValue(x, y).invoke();
//        if (boundaryValue.is()) return null;
//        for (int i = 1; i < rows.size(); i++) {
//            List<Object> lines = rows.set(i, row);
//            System.out.println(lines);
//        }
//        return rows;
//    }
//
//    public static List<List<Object>> inputSitExcel(List<List<Object>> rows, String x, int y, String str) {
//        return inputSitExcel(rows, iPosition(x), y, str);
//    }
//
//
//    //按位置写入值
//    public static ExcelWriter writerPrint(ExcelWriter writer, String location, String str) {
//        writer.writeCellValue(location, str);
//        return writer;
//    }
//
//
//    public static void writerPrintCell() {
//    }
//
//    //医废科室表
//    //A1 = title
//    //f6=年，f4 = 月 ，f5 = 日
//    //
//
//    public static void getJson() throws IOException {
//        String json_path = "/Volumes/Data/01乐树汇泉/医废/idea/XiaoYi/xiaoyi-yf/src/main/resources/report/config.json";
//
//        JSONArray jsonArray = JSONUtil.readJSONArray(new File(json_path), Charset.defaultCharset());
//        ExcelWriter writer = ExcelUtil.getWriter("");
//
//        JSONObject json = (JSONObject) jsonArray.get(0);
//        JSONObject head = (JSONObject) json.get("head");
//        System.out.println(head);
//        for (String key : head.keySet()) {
//            System.out.println(key + ":" + head.get(key));
//
//            writerPrint(writer, key, Table_Dict.table_Dict(head.get(key).toString()));
//        }
//        writer.close();
//
//    }
//
//
//    //按位置读取
//    public static Object readSitExcel(List<List<Object>> rows, int x, int y) {
//        BoundaryValue boundaryValue = new BoundaryValue(x, y).invoke();
//        if (boundaryValue.is()) return "error:索引值低于边界";
//        List<Object> line = rows.get(boundaryValue.getY());
//        if (line.size() >= boundaryValue.getX())
//            return line.get(boundaryValue.getX());
//        return -1;
//    }
//
//    public static Object readSitExcel(List<List<Object>> rows, String x, int y) {
//        return readSitExcel(rows, iPosition(x), y);
//    }
//
//
//    /* 该方法用来将Excel中的ABCD列转换成具体的数据
//     * @param column:ABCD列名称
//     * @return integer：将字母列名称转换成数字
//     * **/
//    public static int iPosition(String column) {
//        Pattern pattern = Pattern.compile("[a-zA-Z]+");
//        if (!pattern.matcher(column).matches())
//            return -1;//字符串错误
//        column = column.toUpperCase();
//        int num = 0;
//        int result = 0;
//        int length = column.length();
//        for (int i = 0; i < length; i++) {
//            char ch = column.charAt(length - i - 1);
//            num = (int) (ch - 'A');
//            num *= Math.pow(26, i);
//            result += num;
//        }
//        System.out.println("转换" + column + "=" + result);
//        return result;
//    }
//
//    /**
//     * 表格边界值
//     */
//    private static class BoundaryValue {
//        private boolean myResult;
//        private int x;
//        private int y;
//
//        public BoundaryValue(int x, int y) {
//            this.x = x;
//            this.y = y;
//        }
//
//        boolean is() {
//            return myResult;
//        }
//
//        public int getX() {
//            return x;
//        }
//
//        public int getY() {
//            return y;
//        }
//
//        public BoundaryValue invoke() {
//            if (x <= 0 || y <= 0) {
//                myResult = true;
//                return this;
//            }
//            x -= 1;
//            y -= 1;
//            myResult = false;
//            return this;
//        }
//    }
}
